﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace AIBots.Principal
{
    class Peca
    {
        /// <summary>
        /// Qual parte do corpo pertence a peça.
        /// </summary>
        public tiposPeca tipo;
        public enum tiposPeca { CABECA, BRACO, PERNA, }
        
        /// <summary>
        /// Conjunto de ações que serão tomadas quando o Tipo for "CABECA"
        /// </summary>
        public Cabeca cabeca;

        public enum tiposCabeca { IF, FOR, NENHUM }
        public struct Cabeca
        {
            /// <summary>
            /// Se for "IF" então terá Ação e Reação.
            /// Se for "FOR" então repetirá a Ação em int Vezes
            /// Se for "" então irá realizar a Acao 1x.
            /// </summary>
            public tiposCabeca tipo;
            /// <summary>
            /// Acao principal no caso de "FOR" ou "" e condicao necessária no caso de "IF"
            /// </summary>
            public Acao acao;
            /// <summary>
            /// Numero de vezes que será repetido o "FOR"
            /// </summary>
            public int vezes;
            /// <summary>
            /// Reação ao "IF"
            /// </summary>
            public Acao reacao;
        }

        public Braco braco;

        public enum tiposBraco { FOR, NENHUM, }
        public struct Braco
        {
            public tiposBraco tipo;
            public Acao acao;
        }

        public Perna perna;

        public enum tiposPerna { IF, NENHUM, }
        public struct Perna
        {
            public tiposPerna tipo;
            public Acao acao;
        }

        public enum tiposAcao { MELEE, RANGED, MOV, }
        public struct Acao
        {
            /// <summary>
            /// Determina se a ação poderá ser executada ou não devido a sua natureza...
            /// "MELEE", "RANGED", "MOV", ...
            /// </summary>
            public tiposAcao tipo;
            /// <summary>
            /// Determinará o tipo de ação a ser executada.
            /// </summary>
            public String acao;
        }


    }
}
